package cn.yitun.chat.yitunservercommonlib.dataentity.vo.system;

import lombok.Data;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

@Data
public class MenuTreeTableVo implements Serializable {
    private static final long serialVersionUID = 1L;

    private Long id;
    // 菜单名称
    private String name;
    // 父菜单ID，一级菜单为0
    private Long parentId;
    /** 父菜单名称 */
    private String parentName;
    // 父级路由
    private String parentUrl;

    // 菜单URL
    private String url;
    // 授权(多个用逗号分隔，如：user:list,user:create)
    private String perms;
    // 类型 0：目录 1：菜单 2：按钮
    private Integer type;
    // 菜单图标
    private String icon;
    // 排序
    private Integer orderNum;
    // 排序
    private String visible;

    private Long updateTime;
    /** 子菜单 */
    private List<MenuTreeTableVo> children = new ArrayList<>();

    public static List<MenuTreeTableVo> buildList(List<MenuTreeTableVo> nodes, Long idParam) {
        if (nodes == null) {
            return null;
        }
        List<MenuTreeTableVo> topNodes = new ArrayList<>();
        for (MenuTreeTableVo child : nodes) {
            Long pid = child.getParentId();
            if (pid == null  || idParam.equals(pid)) {
                topNodes.add(child);
                continue;
            }
            for (MenuTreeTableVo parent : nodes) {
                Long id = parent.getId();
                if ( id != null  && id.equals(pid)) {
                    parent.getChildren().add(child);
                    // child.setHasParent(true);
                    // parent.setChildren(true);
//                    parent.setLeaf(false);
                    continue;
                } else {
//                     parent.setLeaf(true);
                }
            }
        }
            return topNodes;
    }
}
